package com.example.demo.service;

import java.util.Optional;
import java.util.concurrent.TimeUnit;

/**
 * 响应缓存服务接口，用于缓存API响应，提高性能
 */
public interface ResponseCacheService {

    /**
     * 将数据存入缓存
     * 
     * @param key        缓存键
     * @param value      缓存值
     * @param expireTime 过期时间
     * @param timeUnit   时间单位
     * @param <T>        值的类型
     */
    <T> void put(String key, T value, long expireTime, TimeUnit timeUnit);

    /**
     * 从缓存中获取数据
     * 
     * @param key  缓存键
     * @param type 值的类型
     * @param <T>  值的类型
     * @return 缓存的值，如果不存在则返回空
     */
    <T> Optional<T> get(String key, Class<T> type);

    /**
     * 从缓存中删除数据
     * 
     * @param key 缓存键
     */
    void remove(String key);

    /**
     * 清除所有缓存
     */
    void clear();
}